package net.xo68.destiny.contract.api;

import net.xo68.destiny.contract.domain.RespondResult;
import net.xo68.destiny.contract.domain.StringRespondResult;
import net.xo68.destiny.contract.domain.node.NodeRegistry;
import net.xo68.destiny.contract.domain.report.JobHandleReplyDatagram;

import java.util.List;

/**
 * 管理节点接口
 * @author wuxie
 * @version 2020-11-8
 */
public interface ManagerApi {


    /**
     * 发现节点注册信息
     * @param workGroupName
     * @return
     */
    RespondResult<List<NodeRegistry>> discovery(String workGroupName);


    /**
     * 工作节点心跳注册
     * @param nodeRegistry
     * @return
     */
    StringRespondResult workerHeartbeat(NodeRegistry nodeRegistry);


    /**
     * 工作节点下线处理
     * @param nodeRegistry
     * @return
     */
    StringRespondResult workerDownline(NodeRegistry nodeRegistry);


    /**
     * 工作节点任务状态上报
     * @param replyDatagramList
     * @return
     */
    StringRespondResult jobState(List<JobHandleReplyDatagram> replyDatagramList);
}
